<?php

/** 
 * @author juanjo
 * 
 * 
 */
class CamposFormulario
   {

      //- Funciones auxiliares--------------------------------------------------------
      public function walk_tolower( &$val )
         {
            $val = strtolower ( $val );
         }

      public function array_lower( $a_arr )
         {
            array_walk ( $a_arr, 'walk_tolower' );
            return $a_arr;
         }

         //- Funciones de abstracción de formularios -------------------------------------
      //=CREA UN SELECT= en base a un array de textos y valores de misma dimension
      // $default puede ser 1texto ( o un array) de valor/es que estarán seleccionado/s
      // $extra_tag se añadirá al select:  ej: "class='frm' onclick=alert('')"
      public function frm_select( $name, $arr_txt, $arr_vals, $default = '', $extra_tag = '' )
         {
            $tmp = "<select name='$name' $extra_tag>";
            $items = count ( $arr_txt );
            if ( $items != count ( $arr_vals ) )
               return $tmp . "<option>ERR! en el array de valores</select>";
            for( $i = 0; $i < $items; $i ++ )
               {
                  $sel = ' selected';
                  $val = $arr_vals [$i];
                  if ( is_array ( $default ) )
                     {
                        if ( ! in_array ( strtolower ( $val ), $this -> array_lower ( $default ) ) )
                           $sel = '';
                     }
                  else
                     {
                        if ( ! eregi ( $val, $default ) )
                           $sel = '';
                     }
                  $tmp .= "<option value='$val'$sel>" . $arr_txt [$i] . "</option>";
               }
               
           //    echo $tmp;
            return $tmp . '</select>';
         }

         //=CREA UNA LISTA=  de tamaño visible = $size,  lo demás es igual que frm_select
      public function frm_list( $name, $size, $arr_txt, $arr_vals, $default = '', $extra_tag = '' )
         {
            return $this -> frm_select ( $name, $arr_txt, $arr_vals, $default, "size=$size $extra_tag" );
         }

         //=CREA UNA LISTA DE SELECCION MULTIPLE=, como valores seleccionados se puede pasar un array
      public function frm_list_multi( $name, $size, $arr_txt, $arr_vals, $default = '', $extra_tag = '' )
         {
            return $this -> frm_list ( $name . "[]", $size, $arr_txt, $arr_vals, $default, "multiple $extra_tag" );
         }

         //=CREA UN CHECKBOX=, Si se le pasa una variable por $var_in y coincide con $ck_val, se selecciona
      public function frm_check( $name, $ck_val, $var_in = '', $extra_tag = '' )
         {
            $ck = '';
            if ( strtolower ( $ck_val ) == strtolower ( $var_in ) )
               $ck = ' checked';
            return "<input type=checkbox name='$name' value='$ck_val'$extra_tag$ck>";
         }

         //=CREA UN RADIO=, Si se le pasa una variable por $var_in y coincide con $ck_val, se selecciona
      public function frm_radio( $name, $val, $var_in = '', $extra_tag = '' )
         {
            $ck = '';
            if ( strtolower ( $val ) == strtolower ( $var_in ) )
               $ck = ' checked';
            return "<input type=radio name='$name' value='$val'$extra_tag$ck>";
         }

         //=CREA UN TEXTBOX=
      public function frm_text( $name, $val, $size, $max_length, $extra_tag = '' )
         {
            return "<input type=text name='$name' size='$size' maxlength='$max_length' value='$val'$extra_tag>";
         }

         //=CREA UN PASSWORD=
      public function frm_password( $name, $val, $size, $max_length, $extra_tag = '' )
         {
            return "<input type=password name='$name' size='$size' maxlength='$max_length' value='$val'$extra_tag>";
         }
   }
   
   $campos = new CamposFormulario();
   
   $select = $campos -> frm_select( "sel_nombre", array( "Silao", "Guanajuato" ), array( "SIL", "GTO" ) );
   
   echo "[".$select."]";
?>